package com.atguigu1.core.rdd

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 *
 * @description: 读取文件分区分配策略
 * @time: 2021-03-12 11:45
 * @author: baojinlong
 **/
object Spark05FileRddParallelRules {
  def main(args: Array[String]): Unit = {
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("rdd")
    // 设置rdd分区数字
    val sparkContext = new SparkContext(sparkConf)
    // textFile可以将文件作为数据处理的数据源,默认也可以设定分区
    // math.min(defaultParallelism, 2) local[*]环境下defaultParallelism为8 取2
    // val rddValue: RDD[String] = sparkContext.textFile("datas/1.txt")
    val rddValue: RDD[String] = sparkContext.textFile("datas/1.txt", 2)
    // 首先获取数组长度5
    rddValue.saveAsTextFile("output")
    // 关闭环境
    sparkContext.stop()

    /**
     * 文件分区数量计算方式:
     * totalSize=7Byte
     * goalSize=7/2=3Byte每个分区需要保存3个字节
     * 7/3=2 余下1 1/每个分区的字节数=1/3=0.333>0.1则新增一个分区hadoop
     */
  }

}
